package com.flow.service.facade.check.user.pojo.vo;

import com.flow.common.facade.check.user.immutable.GenderImmutable;
import com.flow.common.facade.check.user.immutable.UserStatusImmutable;
import com.flow.common.facade.check.user.immutable.UserTypeImmutable;
import com.flow.framework.core.pojo.vo.base.BaseBizModuleVo;
import com.flow.framework.core.validation.annotation.ImmutableCustomization;
import com.flow.service.facade.check.CheckErrorCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
 * 用户信息
 *
 * @author luoguopiao
 * @version 0.0.1
 * @date 2023/4/9
 */
@ApiModel(description = "用户信息")
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class UserModuleVo extends BaseBizModuleVo {

    private static final long serialVersionUID = 1L;

    /**
     * 角色编号
     */
    @ApiModelProperty("角色编号")
    private String roleCode;

    /**
     * 用户姓名
     */
    @ApiModelProperty("用户姓名")
    private String userName;

    /**
     * 登录账号
     */
    @ApiModelProperty("登录账号")
    private String loginAccount;

    /**
     * 邮箱
     */
    @ApiModelProperty("邮箱")
    private String email;

    /**
     * 手机
     */
    @ApiModelProperty("手机")
    private String mobilePhone;

    /**
     * 花名
     */
    @ApiModelProperty("花名")
    private String nickName;

    /**
     * 用户类型:01-个人；02-公司
     */
    @ApiModelProperty("用户类型:01-个人；02-公司")
    @ImmutableCustomization(errorCode = CheckErrorCode.USER_TYPE_ERROR, immutableInterface = UserTypeImmutable.class)
    private String userType;

    /**
     * 是否超级管理员
     */
    @ApiModelProperty("是否超级管理员")
    private Boolean isAdmin;

    /**
     * 性别：1-男；2-女
     */
    @ApiModelProperty("性别：1-男；2-女")
    @ImmutableCustomization(errorCode = CheckErrorCode.GENDER_ERROR, immutableInterface = GenderImmutable.class)
    private String gender;

    /**
     * 状态:01-正常；02-冻结
     */
    @ApiModelProperty("状态:01-正常；02-冻结")
    @ImmutableCustomization(errorCode = CheckErrorCode.USER_STATUS_ERROR, immutableInterface = UserStatusImmutable.class)
    private String status;
}
